<!DOCTYPE html>
<html>
<head>
<title>jQuery Knob demo</title>
<script
	src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script src="js/jquery.knob.js"></script>
<script>
            $(function($) {

                $(".knob").knob({
                    change : function (value) {
                        //console.log("change : " + value);
                    },
                    release : function (value) {
                        //console.log(this.$.attr('value'));
                        console.log("release : " + value);
                    },
                    cancel : function () {
                        console.log("cancel : ", this);
                    },
                    draw : function () {

                        // "tron" case
                        if(this.$.data('skin') == 'tron') {

                            var a = this.angle(this.cv)  // Angle
                                , sa = this.startAngle          // Previous start angle
                                , sat = this.startAngle         // Start angle
                                , ea                            // Previous end angle
                                , eat = sat + a                 // End angle
                                , r = 1;

                            this.g.lineWidth = this.lineWidth;

                            this.o.cursor
                                && (sat = eat - 0.3)
                                && (eat = eat + 0.3);

                            if (this.o.displayPrevious) {
                                ea = this.startAngle + this.angle(this.v);
                                this.o.cursor
                                    && (sa = ea - 0.3)
                                    && (ea = ea + 0.3);
                                this.g.beginPath();
                                this.g.strokeStyle = this.pColor;
                                this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, sa, ea, false);
                                this.g.stroke();
                            }

                            this.g.beginPath();
                            this.g.strokeStyle = r ? this.o.fgColor : this.fgColor ;
                            this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, sat, eat, false);
                            this.g.stroke();

                            this.g.lineWidth = 2;
                            this.g.beginPath();
                            this.g.strokeStyle = this.o.fgColor;
                            this.g.arc( this.xy, this.xy, this.radius - this.lineWidth + 1 + this.lineWidth * 2 / 3, 0, 2 * Math.PI, false);
                            this.g.stroke();

                            return false;
                        }
                    }
                });

                // Example of infinite knob, iPod click wheel
                var v, up=0,down=0,i=0
                    ,$idir = $("div.idir")
                    ,$ival = $("div.ival")
                    ,incr = function() { i++; $idir.show().html("+").fadeOut(); $ival.html(i); }
                    ,decr = function() { i--; $idir.show().html("-").fadeOut(); $ival.html(i); };
                $("input.infinite").knob(
                                    {
                                    min : 0
                                    , max : 20
                                    , stopper : false
                                    , change : function () {
                                                    if(v > this.cv){
                                                        if(up){
                                                            decr();
                                                            up=0;
                                                        }else{up=1;down=0;}
                                                    } else {
                                                        if(v < this.cv){
                                                            if(down){
                                                                incr();
                                                                down=0;
                                                            }else{down=1;up=0;}
                                                        }
                                                    }
                                                    v = this.cv;
                                                }
                                    });
            });
        </script>
<style>
body {
	padding: 0;
	margin: 0px 50px;
	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
	font-weight: 300;
	text-rendering: optimizelegibility;
}

p {
	font-size: 30px;
	line-height: 30px
}

div.demo {
	text-align: center;
	width: 280px;
	float: left
}

div.demo>p {
	font-size: 20px
}
</style>
</head>
<body>
	<div
		style="width: 100%; font-size: 40px; letter-spacing: -8px; line-height: 40px;">
		<h1>jQuery Knob</h1>
	</div>
	<div>
		<p>
			Nice, downward compatible, touchable, jQuery dial. <a
				href="http://flattr.com/thing/674900/jQuery-Knob" target="_blank"><img
				src="http://api.flattr.com/button/flattr-badge-large.png"
				alt="Flattr this" title="Flattr this" border="0" /></a>
		</p>
		<p style="font-size: 20px">* implemented interactions : mouse
			click and wheel mouse, keyboard (on focus) and fingers (touch events)</p>
	</div>
	<div class="demo">
		<p>&#215; Disable display input</p>
		<pre>
data-width="100"
data-displayInput=false
            </pre>
		<input class="knob" data-width="100" data-displayInput=false
			value="35">
	</div>
	<div class="demo">
		<p>&#215; 'cursor' mode</p>
		<pre>
data-width="150"
data-cursor=true
data-thickness=.3
data-fgColor="#222222"
            </pre>
		<input class="knob" data-width="150" data-cursor=true
			data-fgColor="#222222" data-thickness=.3 value="29">
	</div>
	<div class="demo">
		<p>&#215; Display previous value</p>
		<pre>
data-displayPrevious=true
data-min="-100"
            </pre>
		<input class="knob" data-width="200" data-min="-100"
			data-displayPrevious=true value="44">
	</div>
	<div style="clear: both"></div>
	<div class="demo">
		<p>&#215; Angle offset</p>
		<pre>
data-angleOffset=90
data-linecap=round
            </pre>
		<input class="knob" data-angleOffset=90 data-linecap=round value="35">
	</div>
	<div class="demo">
		<p>&#215; Angle offset and arc</p>
		<pre>
data-fgColor="#66CC66"
data-angleOffset=-125
data-angleArc=250
            </pre>
		<input class="knob" data-angleOffset=-125 data-angleArc=250
			data-fgColor="#66EE66" value="35">
	</div>
	<div class="demo">
		<p>&#215; 5-digit values, step 1000</p>
		<pre>
data-step="1000"
data-min="-15000"
data-max="15000"
data-displayPrevious=true
            </pre>
		<input class="knob" data-min="-15000" data-displayPrevious=true
			data-max="15000" data-step="1000" value="-11000">
	</div>
	<div style="clear: both"></div>
	<div style="text-align: center">
		<p style="font-size: 20px">&#215; Overloaded 'draw' method</p>
	</div>
	<div style="background-color: #222; height: 340px">
		<div class="demo" style="background-color: #222; color: #FFF;">
			<pre>
    data-width="75"
    data-fgColor="#ffec03"
    data-skin="tron"
    data-thickness=".2"
    data-displayPrevious=true
                </pre>
			<input class="knob" data-width="75" data-displayPrevious=true
				data-fgColor="#ffec03" data-skin="tron" data-cursor=true value="75"
				data-thickness=".2">
		</div>
		<div class="demo" style="background-color: #222; color: #FFF;">
			<pre>
    data-width="150"
    data-fgColor="#ffec03"
    data-skin="tron"
    data-thickness=".2"
    data-displayPrevious=true
                </pre>
			<input class="knob" data-width="150" data-displayPrevious=true
				data-fgColor="#ffec03" data-skin="tron" data-thickness=".2"
				value="75">
		</div>
		<div class="demo" style="background-color: #222; color: #FFF;">
			<pre>
    data-width="150"
    data-fgColor="#C0ffff"
    data-skin="tron"
    data-thickness=".1"
    data-angleOffset="180"
                </pre>
			<input class="knob" data-width="150" data-angleOffset="180"
				data-fgColor="#C0ffff" data-skin="tron" data-thickness=".1"
				value="35">
		</div>
	</div>
	<div style="clear: both"></div>
	<div class="demo" style="width: 100%">
		<p>&#215; Responsive</p>
		<pre>
data-width="80%"
            </pre>
		<div style="width: 30%; border: 3px dashed; margin-bottom: 20px">
			<i> Current div width is 30% of window width.<br> Knob width
				is 80% of current div.<br> Knob width is 80% of 30% of window
				width.<br> Test resizing window.
			</i> <br> <br> <input class="knob" data-width="80%" value="35">
		</div>
	</div>
	<div style="clear: both"></div>
	<script>
        function clock() {
            var $s = $(".second"),
                $m = $(".minute"),
                $h = $(".hour");
                d = new Date(),
                s = d.getSeconds(),
                m = d.getMinutes(),
                h = d.getHours();
            $s.val(s).trigger("change");
            $m.val(m).trigger("change");
            $h.val(h).trigger("change");
            setTimeout("clock()", 1000);
        }
        clock();
        </script>
	<div class="demo"
		style="color: #EEE; background: #222; height: 420px; width: 100%">
		<p>&#215; Superpose (clock)</p>
		<div style="position: relative; width: 350px; margin: auto">
			<div style="position: absolute; left: 10px; top: 10px">
				<input class="knob hour" data-min="0" data-max="24"
					data-bgColor="#333" data-fgColor="#ffec03" data-displayInput=false
					data-width="300" data-height="300" data-thickness=".3">
			</div>
			<div style="position: absolute; left: 60px; top: 60px">
				<input class="knob minute" data-min="0" data-max="60"
					data-bgColor="#333" data-displayInput=false data-width="200"
					data-height="200" data-thickness=".45">
			</div>
			<div style="position: absolute; left: 110px; top: 110px">
				<input class="knob second" data-min="0" data-max="60"
					data-bgColor="#333" data-fgColor="rgb(127, 255, 0)"
					data-displayInput=false data-width="100" data-height="100"
					data-thickness=".3">
			</div>
		</div>
	</div>
	<div style="clear: both"></div>
	<div class="demo">
		<p>&#215; Readonly</p>
		<pre>
data-thickness=".4"
data-fgColor="chartreuse"
data-readOnly=true
            </pre>
		<input class="knob" data-fgColor="chartreuse" data-thickness=".4"
			data-readOnly=true value="22">
	</div>
	<div class="demo">
		<p>&#215; Dynamic</p>
		<pre>
data-width="200"
            </pre>
		<input type="button" onclick="$('.knob-dyn').knob();" value="knobify!">
		<input type="text" class="knob-dyn" data-width="200" data-cursor=true
			value="56">
		<pre>
data-width="50"
data-cursor=true
            </pre>
		<input type="button" onclick="$('.knob-dyn2').knob();"
			value="knobify!"> <input type="text" class="knob-dyn2"
			data-width="50" data-thickness=".4" value="56">
	</div>
	<div class="demo" style="height: 440px; width: 300px">
		<p>&#215; Infinite || iPod click wheel</p>
		<div
			style="float: left; width: 180px; height: 320px; padding: 20px; background-color: #EEEEEE; text-align: center;">
			<pre>
data-width="150"
data-cursor=true
data-thickness=".5"
data-fgColor="#AAAAAA"
data-bgColor="#FFFFFF"
data-displayInput="false"
+ some code
                </pre>
			<input class="infinite" data-width="150" data-thickness=".5"
				data-fgColor="#AAAAAA" data-bgColor="#FFFFFF"
				data-displayInput="false" data-cursor=true>
		</div>
		<div style="float: left; margin-top: 200px;">
			<div class="ival"
				style="width: 80px; text-align: center; font-size: 50px; color: #AAA">0</div>
			<div class="idir"
				style="width: 80px; text-align: center; font-size: 50px;"></div>
		</div>
	</div>
	<div style="clear: both"></div>
	<div id="big" class="demo" style="height: 800px; width: 100%">
		<p>&#215; Big !</p>
		<pre>
data-width="700"
            </pre>
		<input class="knob" data-min="-100" data-max="100" data-width="700"
			data-height="700" data-thickness=".3" data-cursor=true>
	</div>
	<div style="clear: both"></div>
	<div style="padding: 30px; margin-top: 30px;">
		<p style="font-size: 20px;">jQuery Knob is &copy; 2012 Anthony
			Terrien and dual licensed under the MIT or GPL licenses.</p>
	</div>
</body>
</html>